home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 49
/
Aminet 49 (2002)(GTI - Schatztruhe)[!][Jun 2002].iso
/
Aminet
/
dev
/
misc
/
FlexCat.lha
/
Lib
/
HSPascalUnit.sd
< prev
next >
Wrap
Text File
|
1999-11-28
|
4KB
|
179 lines
##rem $Id: HSPascalUnit.sd,v 1.2 1999/11/28 03:36:41 carlos Exp $
##shortstrings
##stringtype E
UNIT %bLocale;
INTERFACE
{****************************************************
This file was created automatically by '%fv'
from "%f0".
Do NOT edit by hand!
****************************************************}
USES
Exec , Locale , Utility ;
CONST
%i = %d ;\n %i_STR = %s%[#0;\n
PROCEDURE CloseCatalog;
PROCEDURE OpenCatalog(loc : pLocale ; language : STRPTR ) ;
FUNCTION GetString(num : LONGINT) : STRPTR ;
FUNCTION GetPasString(num : LONGINT) : STRING;
IMPLEMENTATION
CONST
builtinlanguage = %l%[#0;
version = %v ;
catalog : pCatalog = NIL ;
VAR
OldExitProc : Pointer;
TYPE
tAppString = RECORD
id : LONGINT ;
str : STRPTR ;
END ;
tAppStringArray = ARRAY [0..%n] OF tAppString ;
CONST
AppStrings : tAppStringArray = (( id : 0 ; str : NIL ));
FUNCTION CPtr( s : string ):pointer;INLINE
$201F, { move.l (a7)+,d0 ; get address string }
$5280, { addq.l #1,d0 ; ignore counter }
$2E80; { move.l d0,(a7) ; return "C-string" address }
PROCEDURE CloseCatalog;
BEGIN
IF catalog <> NIL THEN
BEGIN
Locale.CloseCatalog(catalog) ;
catalog := NIL
END;
END;
PROCEDURE InitAppStringsArray;
BEGIN
AppStrings[%d].id := %i;\n AppStrings[%d].str := CPtr(%i_STR);\n
END;
PROCEDURE OpenCatalog(loc : pLocale ; language : STRPTR );
VAR
tags : ARRAY [0..7] OF LONGINT ;
BEGIN
CloseCatalog;
IF (catalog = NIL) AND (LocaleBase <> NIL) THEN
BEGIN
IF language <> NIL THEN
BEGIN
tags[0] := OC_BuiltInLanguage; tags[1] := long(CPtr(builtinlanguage));
tags[2] := OC_Language ; tags[3] := long(language);
tags[4] := OC_Version ; tags[5] := version;
tags[6] := TAG_END;
END
ELSE
BEGIN
tags[0] := OC_BuiltInLanguage; tags[1] := long(CPtr(builtinlanguage));
tags[2] := OC_Version ; tags[3] := version;
tags[4] := TAG_END;
END;
catalog := Locale.OpenCatalogA(loc, CPtr('%b.catalog'#0), @tags) ;
END
END;
FUNCTION GetString(num : LONGINT) : STRPTR ;
VAR
i : LONGINT ;
default : STRPTR ;
BEGIN
i := 0 ;
WHILE (i < %n) AND (AppStrings[i].id <> num) DO
BEGIN
INC(i)
END ;
IF i <> %n THEN
default := AppStrings[i].str
ELSE
default := NIL ;
IF catalog <> NIL THEN
GetString := Locale.GetCatalogStr(catalog, num, default)
ELSE
GetString := default
END;
FUNCTION GetPasString(num : LONGINT) : STRING;
TYPE
pa = ^ta;
ta = PACKED ARRAY [0..MAXINT] OF CHAR;
VAR
i : INTEGER;
sptr : pa;
s : STRING;
BEGIN
sptr := pa(GetString( num ));
s := '';
i := 0;
WHILE sptr^[i] <> #0 DO
BEGIN
s := s + sptr^[i];
INC(i)
END;
GetPasString := s
END;
(***************************************************************************)
(* << INIT AND EXIT PROCEDURE >> *)
(***************************************************************************)
PROCEDURE InitFunction;
BEGIN
LocaleBase := OpenLibrary( 'locale.library' , 38 );
if LocaleBase = NIL then
BEGIN
WRITELN( '*** ERROR *** locale.library ' );
HALT
END;
InitAppStringsArray;
OpenCatalog( NIL , NIL );
END;
PROCEDURE ExitFunction;
BEGIN
if LocaleBase <> NIL then CloseLibrary( LocaleBase );
CloseCatalog;
END;
PROCEDURE ExitHandler;
BEGIN
ExitProc := OldExitProc;
ExitFunction;
END;
PROCEDURE Initialize;
BEGIN
OldExitProc := ExitProc;
ExitProc := @ExitHandler;
InitFunction;
END;
BEGIN
Initialize;
END.